<?php

namespace JsonLowCode\Traits\Props;

use Closure;
use JsonLowCode\Support\JsParse;

/**
 * 设置组件双向绑定数据源
 */
trait HasModel
{
//    /**
//     * 设置组件 v-model:modelName 双向绑定数据源
//     * @param string $modelName
//     * @param string $bindValue
//     * @param Closure|null $closure
//     * @return $this
//     */
//    public function bindModel(string $modelName, string $bindValue, Closure $closure = null): static
//    {
//        $parseValue = JsParse::JSExpression($bindValue);
//        if ($closure!=null) $closure($parseValue,$this);
//        return $this->prop('v-model:'.$modelName, $parseValue);
//    }
//
//    /**
//     * 设置组件 v-model:modelValue
//     * @param string $bindValue
//     * @param Closure|null $closure
//     * @return $this
//     */
//    public function modelValue(string $bindValue,  Closure $closure = null): static
//    {
//        return $this->bindModel("modelValue", $bindValue, $closure);
//    }
//
//    /**
//     * @param string $modelName
//     * @param mixed $value
//     * @param bool $isJSExpression
//     * @param Closure|null $closure
//     * @return $this
//     */
//    public function onUpdateModel(string $modelName, mixed $value, bool $isJSExpression = false,  Closure $closure = null): static
//    {
//        return $this->events("onUpdate:".$modelName, $value, $isJSExpression, $closure);
//    }
//
//    /**
//     * @param mixed $value
//     * @param bool $isJSExpression
//     * @param Closure|null $closure
//     * @return $this
//     */
//    public function onUpdateModelValue(mixed $value, bool $isJSExpression = false,  Closure $closure = null): static
//    {
//        return $this->onUpdateModel("modelValue", $value, $isJSExpression, $closure);
//    }
}
